package advanced.thread;


/**
 * join()方法的作用
 * <p>
 * 主要作用是同步，它可以使得线程之间的并行执行变为串行执行。
 * 在A线程中调用了B线程的join()方法时，表示只有当B线程执行完毕时，A线程才能继续执行。
 */
public class Join_L {

    static class JoinThread implements Runnable {

        //重写run方法
        public void run() {
            for (int i = 0; i < 30; i++) {
                System.out.println(Thread.currentThread().getName() + "..." + i);
            }

        }

    }

    //main方法如下
    public static void main(String[] args) throws InterruptedException {

        JoinThread object = new JoinThread();

        Thread t1 = new Thread(object);

        Thread t2 = new Thread(object);


        t1.start();
//        t1.join();
        t1.join();//这里main线程阻塞,不会执行后边的main的代码(需等待其他线程执行完)
        t2.start();
//        t2.join(); //如果解开注释, 那么main线程又会再次被阻塞,等待之前启动的线程执行完

        for (int j = 0; j < 30; j++) {
            System.out.println(Thread.currentThread().getName() + "..." + j);
        }


    }

}